前幾天有提到過,在沒有 #context
的情況下,Typst 定義的函數都需要是純函數。這是因為快取的效率考量,如果沒有任何的 side-effect,那麼傳入相同參數時,該函數的計算結果就可以快取起來,不需要重複計算兩次。
如果需要修改到已經定義好的東西,例如我希望呼叫某個函數以後,一個外部的變數的值就會跟著修改。那麼在這種情況下,可以使用 #state
來修改狀態。
這樣顯示出來的結果就是
如果我們要使用 for loop,那麼 state
裡面的 update
要改成函數的樣子,才能確保更新。